1. Field of the Invention
The present invention relates, in general, to data processing systems.
2. Description of the Related Art
Data processing systems are systems that manipulate, process, and store data and are notorious within the art. Personal computer systems, and their associated subsystems, constitute well known species of data processing systems.
Personal computer systems typically include a motherboard for mounting at least one microprocessor and other application specific integrated circuits (ASICs), such as memory controllers, input/output (I/O) controllers, and the like. Most motherboards include slots for additional adapter cards to provide additional function to the computer system. Typical functions that a user might add to a computer include additional microprocessors, additional memory, fax/modem capability, sound cards, graphics cards, or the like. The slots included on the motherboard generally include in-line electrical connectors having electrically conductive lands which receive exposed tabs on the adapter cards. The lands are connected to wiring layers, which in turn are connected to a bus that allows the cards to communicate with the microprocessor or other components in the system.
A personal computer system may include many different types of buses to link the various components of the system. Examples of such buses are a xe2x80x9clocal busxe2x80x9d which connects one or more microprocessors to the main memory, an Industry Standard Architecture (ISA) bus for sound cards and modems, a Universal Serial Bus (USB) for pointing devices, scanners, and digital cameras, a Fire Wire (IEEE-1394) for digital video cameras and high-speed storage drives, and a Peripheral Component Interconnect (PCI) bus for graphics cards, SCSI adapters, sound cards, and other peripheral devices such as isochronous devices, network cards, and printer devices.
Before a personal computer is powered on, it is a dead collection of components such as the ones listed above. When the personal computer is powered on, a small burst of electricity is sent to the main system processor. This small burst of electricity clears the registers of the main system processor and starts the boot process. The first step in the boot process is for the PC to ensure that all major components of the PC are functioning correctly, which is accomplished by running a set of computer codes known collectively as the Power On Self Test (POST) routines, which insure that, at least from a hardware aspect, all major system components (including the main processor itself) are functioning normally.
The POST routines are actually the first-executed routines of a larger set of routines known collectively as the Basic Input Output System (BIOS). The BIOS is a collection of routines built into a PC that handle the most fundamental tasks of sending data from one part of the PC to another. Since a very important part of sending and receiving data is to ensure that the units sending and units receiving data are functioning correctly, the very first thing the BIOS does is to invoke and run the POST routines.
As noted, the BIOS routines are substantially permanently built in to the PC. Consequently, the BIOS routines are limited in size and scope. Accordingly, after the BIOS ensures that all major components of the data processing system are operating properly (via its POST routines), the BIOS initiates a process which ultimately results in the loading of an operating system from disk storage.
To do this, the BIOS routine begins searching through the PC""s disk drives (e.g., disk drives A, B, and C), looking for a disk containing specific data, known as a boot record. The boot record is a very small program which initiates the loading of system files which will ultimately result in a fully operational computer system. Once the BIOS locates the boot record, it loads it into the PC""s memory at a certain memory address. Thereafter, the BIOS passes control to the boot record by branching to that certain memory address.
The boot record initiates a series of events involving the loading and executing of many programs. This series of events typically determines the presence of all hardware resources available to the PC, correctly configures those hardware resources, resolves any resource allocation problems, loads or shadows the BIOS from permanent storage into RAM, and supplements the BIOS in RAM with small programs, known as device drivers, when a hardware component present is either not recognized or is some variation of a component ordinarily recognized by the BIOS (remember the BIOS is xe2x80x9cbuilt inxe2x80x9d so its contents are limited and inflexible). Finally, the series of events initiated by the boot record culminates in the loading and execution of a collection of programs known as the xe2x80x9coperating system.xe2x80x9d
The operating system serves as a sort of interpreter between application programs and the BIOS. PC components (e.g., a printer) consist of electrical circuits and mechanical linkages which perform certain tasks. However, as is well known, PCs are operated and controlled by computer programs, which are long series of symbolic instructions which direct the PC to do something (e.g., print a document on a printer). The BIOS is the entity that translates computer programs into the electrical signals necessary to make the electrical and mechanical linkages of PC components perform desired tasks.
To do this, the BIOS, receives and transmits computer program codes at a first interface with the operating system, and receives and transmits electrical circuit signals at a second interface with the electrical circuits of the PC components to be controlled and/or interacted with. The BIOS is often called firmware to denote its status halfway between hardware and software.
The operating system serves as an interpreter between applications programs and the BIOS, because insofar as the BIOS is logically very close to the PC hardware, the software codes of the BIOS (possibly supplemented by one or more device drivers) are closely constrained and related to the actual architecture of the hardware. Given that there are many competing vendors of hardware, with each piece of hardware having its own BIOS/device driver requirements, in the absence of an operating system, a system application (e.g., a web-browser, database, or word processor application) programmer would have to be aware of and program for the BIOS/device drivers present on a particular machine or platform. Fortunately, this is not the case. Instead, certain companies (e.g., Microsoft, Apple, and Linux) have cooperated with hardware vendors and have created intermediary programs, known as operating systems, which overlay and interact with the BIOS/device drivers present within a system. The operating system manufacturers present to the applications programmer a standardized set of interface programming protocols or conventions (e.g., protocols for copying a file to disk storage or deleting a file from disk storage). When an operating system is in use, an application programmer merely requests certain functions of the operating system, and the operating system takes over from there, handling the details involving the BIOS/device drivers.
As has been mentioned, the fact that a BIOS is built in assures that the BIOS is limited and inflexible. For various reasons, the BIOS, which is relatively standard within the industry, is not something which is changed on a regular basis. Accordingly, when changes in hardware occur which require capabilities beyond the built-in BIOS, the BIOS is typically supplemented by the use of device driver programs under the control of an operating system.
One situation in which this extension of the BIOS is done involves disk storage. When the industry standard BIOS was written, there were basically only three disk drives envisioned: A drive, B drive, and C drive. Accordingly, industry standard BIOS is only written to handle the A-B-C triad of drives.
Recent times have seen a proliferation of drives above and beyond those in existence when the early A-B-C triad of drives was conceived. Examples of such drives are Compact Disk Read Only Memory Drives (CD-ROM drives) and Digital Video Disk Drives (DVD drives). Along with the proliferation of these newer drives has developed a desire to utilize these newer drives in conjunction with the old A-B-C triad.
Insofar as the industry standard BIOS has been written for only three drives, certain work-a rounds have been developed to extend the ability of PCs to access a number of drives beyond that provided for in their BIOSes. One such work-around is known as Integrated Drive Electronics (IDE).
IDE utilizes device drivers in conjunction with the operating system to expand the capability of the BIOS to access disk drives. Utilizing IDE, a PC can access and utilize up to four drives via a slot which in the past would only allow the access and utilization of one drive. That is, the operating system, working with an IDE controller built into the motherboard (main board) of the computer system allows the BIOS to write as if it were writing to a particular drive (e.g., a hard drive attached in a C drive slot). However, the operating system is working with the application program and notes that the application program actually desires access to a drive, which is one of four drives attached to the C drive slot via IDE connectors and circuitry. Accordingly, the operating system, working with the IDE controller, sends a control signal which selects the CD drive as xe2x80x9cthexe2x80x9d drive attached to the C drive slot. Accordingly, the BIOS can read and write to the drive in drive slot C and not have to concern itself with the fact that there are other drives also attached to the same slot.
IDE is relatively new, and as yet has not been fully utilized. Accordingly, a need exists in the art for methods and systems which expands the utilization of IDE.
A method and computer system have been invented which expand the utilization of IDE. The method includes selecting a boot device priority sequence, and configuringxe2x80x94in response to the boot device priority sequencexe2x80x94an I/O controller such that a MASTER or SLAVE designation of at least one IDE device conforms to the boot device priority sequence. The computer system includes at least one printed circuit board operably connecting at least one processor, at least one memory, at least one I/O controller, and at least one IDE controller; at least one IDE bus operably connecting at least two IDE device connectors with the at least one IDE controller; and at least one cable select signal pin of each of the at least two IDE device connectors operably coupled to the at least one I/O controller.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.